package joc.customize;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * This annotation is used for contracts that cover method parameters.
 * A call to this method will be inserted in the beginning of
 * all methods in the class specifying the contract annotation.<br/>
 * A contract method using this annotation is expected to have exactly
 * 2 parameters:
 * <ol><li>The annotation for this contract</li>
 * <li>The method parameter value</li></ol>
 * The contract method is expected to return a value of the primitive
 * type boolean. The contract method should return true if the contract
 * is fulfilled, and false if the contract is broken.
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD })
public @interface ForFieldEvaluateAtBeginningOfAllMethods {

}
